<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
  <link rel="stylesheet" href="../book.css" charset="ISO-8859-1" type="text/css" />
  <title>Introduction</title>
</head>

<body>

<h1>EclEmma Java Code Coverage Tool</h1>

<p>
  EclEmma is a free Java code coverage tool for Eclipse, available under the
  <a class="extern" href="license.html">Eclipse Public License</a>. It brings
  code coverage analysis directly into the Eclipse workbench:
</p>

<ul>
  <li><b>Fast develop/test cycle:</b> Launches from within the workbench like
    JUnit test runs can directly be analyzed for code coverage.</li>
  <li><b>Rich coverage analysis:</b> Coverage results are immediately summarized
    and highlighted in the Java source code editors.
  </li>
  <li><b>Non-invasive:</b> EclEmma does not require modifying your projects or
  performing any other setup.</li>
 </ul>

<p>
  Since version 2.0 EclEmma is based on the
  <a class="extern" href="http://www.jacoco.org/jacoco">JaCoCo</a> code
  coverage library. The Eclipse integration has its focus on supporting the
  individual developer in an highly interactive way. For automated builds please
  refer to <a class="extern" href="http://www.jacoco.org/jacoco/trunk/doc">JaCoCo
  documentation</a> for
  <a class="extern" href="http://www.jacoco.org/jacoco/trunk/doc/integrations.html">integrations with other tools</a>.
</p>

<p>
  Originally EclEmma was inspired by and technically based on the great
  <a class="extern" href="http://emma.sourceforge.net/">EMMA</a> library
  developed by Vlad Roubtsov.
</p>

<h2>Feature Overview</h2>

<h3>Launching</h3>

<p>
  EclEmma adds a so-called <i>launch mode</i> to the Eclipse workbench. It is
  called <i>Coverage</i> mode and works exactly like the existing <i>Run</i> and
  <i>Debug</i> modes. The <i>Coverage</i> launch mode can be activated from the
  <i>Run</i> menu or the workbench's toolbar:
</p>

<p>
  <img src="images/launchtoolbar.gif" alt="Launch Toolbar" width="112" height="27"/>
</p>

<p>
  Simply launch your applications or unit tests in the <i>Coverage</i> mode to
  collect coverage information. Currently the following launch types are
  supported:
</p>

<ul>
  <li>Local Java application</li>
  <li>Eclipse/RCP application</li>
  <li>Equinox OSGi framework</li>
  <li>JUnit test</li>
  <li>TestNG test</li>
  <li>JUnit plug-in test</li>
  <li>JUnit RAP test</li>
  <li>SWTBot test</li>
  <li>Scala application</li>
</ul>


<h3>Analysis</h3>

<p>
  On request or after your target application has terminated code coverage
  information is automatically available in the Eclipse workbench:
</p>

<ul>
  <li><b>Coverage overview:</b> The <i>Coverage</i> view lists coverage
  summaries for your Java projects, allowing drill-down to method level.</li>

  <li><b>Source highlighting:</b> The result of a coverage session is also
  directly visible in the Java source editors. A customizable color code
  highlights fully, partly and not covered lines. This works for your own source
  code as well as for source attached to analyzed external libraries.</li>
</ul>

<p>
  Additional features support analysis for your test coverage:
</p>

<ul>
  <li><b>Different counters:</b> Select whether instructions, branches, lines,
  methods, types or cyclomatic complexity should be summarized.</li>
  <li><b>Multiple coverage sessions:</b> Switching between coverage data from
  multiple sessions is possible.</li>
  <li><b>Merge Sessions:</b> If multiple different test runs should be
  considered for analysis coverage sessions can easily be merged.</li>
</ul>

<h3>Import/Export</h3>

<p>
  While EclEmma is primarily designed for test runs and analysis within the
  Eclipse workbench, it provides some import/export features.
</p>

<ul>
  <li><b>Execution data import:</b> A wizard allows to import JaCoCo
  <code>*.exec</code> execution data files from external launches.</li>
  <li><b>Coverage report export:</b> Coverage data can be exported in HTML, XML
  or CSV format or as JaCoCo execution data files (<code>*.exec</code>).</li>
</ul>

</body>
</html>
